package datos;

import java.io.Serializable;
import java.lang.String;
import java.util.List;

import javax.persistence.*;
import org.eclipse.persistence.annotations.JoinFetch;
import static org.eclipse.persistence.annotations.JoinFetchType.INNER;

/**
 * @version 1.0
 * @author Andres Mejia -Fabio Giraldo
 * 
 *  Entity implementation class for Entity: Modelo
 * 
 * @param nombre llave primaria de la entidad
 * @param descripcion muestra las caracteristicas del modelo en especifico.
 * @param automoviles muestra todos los automoviles que poseen un modelo en particular.
 * @param marca hace referncia a la marca del modelo.
 *
 */
@Entity

public class Modelo implements Serializable {

	   
	

	@Id
	private String nombre;
	private String descripcion;
	@OneToMany(mappedBy = "modelo")
	List<Automovil>automoviles;
	@ManyToOne
	Marca marca;
	
	
	private static final long serialVersionUID = 1L;

	/**
	 * Constructor de la clase 
	 **/  
	public Modelo() 
	{
		super();
	}   
	
	/**
	 * @return nombre devuelve el nombre del modelo.
	 */
	public String getNombre() {
		return this.nombre;
	}

	/**
	 * este metodo permite modificar el nombre de un modelo.
	 * @param nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}   
	
	/**
	 * @return descripcion devuelve la descripcion de un modelo.
	 */
	public String getDescripcion() {
		return this.descripcion;
	}

	/**
	 * este metodo permite modificar la descripcion de una marca. 
	 * @param descripcion
	 */
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
	/**
	 * 
	 * @return marca devuelve el valor de la marca a la que pertenece un modelo.
	 */
	public Marca getMarca() {
		return marca;
	}
	
	/**
	 * este metodo permite modificar la marca de un modelo.
	 * @param marca
	 */
	public void setMarca(Marca marca) {
		this.marca = marca;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Modelo other = (Modelo) obj;
		if (nombre == null) {
			if (other.nombre != null)
				return false;
		} else if (!nombre.equals(other.nombre))
			return false;
		return true;
	}
   
}
